import { defineStore } from "pinia"
// 引入发送请求 获取菜单的方法
import * as api from "@/api/permission"
// 引入完整路由表 用于判断 用户有哪些菜单权限
import routes from "@/router/generouteRoutes"
// 引入递归求 routes 的方法
import recursionRoutes from '@/utils/recursionRoutes'
// 引入动态路由
import dynamicRoute from "@/router/dynamicRoutes";
// 引入静态路由
import staticroutes from "../router/staticroutes";
// 引入路由对象
import router from "@/router";

export const usePermission = defineStore("permission", {
    state() {
        return {
            menulist: [],
            logout:false
        }
    },
    actions: {
        async fetch_menulist() {
            // 发起请求获取菜单
            return api.getMenuApi()
                .then(res => {
                    // console.log(res.data);
                    // console.log(routes);
                    // 获取了用户的路由
                    let userRoutes = recursionRoutes(res.data.menuList, routes)
                    // console.log(r);
                    // 给menulist赋值
                    this.menulist = userRoutes

                    // 开始动态添加路由
                    // 1.先从动态路由中找到路径是/的那个对象
                    let target = dynamicRoute.find(route => route.path === '/')
                    // 2.将用户路由变成它的孩子
                    target.children = userRoutes
                    // 3.静态路由也要添加到动态路由的孩子里
                    target.children = [...target.children, ...staticroutes]
                    // 4.使用addRoute方法，将dynamicRoute添加到路由的routes配置中
                    router.addRoute(target)

                })
        }
    }
})